package com.example.algorithm.huawei_rongyao_29;
import java.util.Arrays;
import java.util.Scanner;

// 将给定字符串按照字典顺序排序
// 难度：简单

/**
 * 标题：字符串排序 | 时间限制：1秒 | 内存限制：32768K
 * 给定 n 个字符串，请对 n 个字符串按照字典序排列。
 * 数据范围：1<=n<=1000  字符串长度满足 1<=len<=100
 *
 * 输入描述:
 * 输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
 *
 * 输出描述:
 * 数据输出n行，输出结果为按照字典序排列的字符串。
 *
 * 示例1
 * 输入
 * 9
 * cap
 * to
 * cat
 * card
 * two
 * too
 * up
 * boat
 * boot
 *
 * 输出
 * boat
 * boot
 * cap
 * card
 * cat
 * to
 * too
 * two
 * up
 *
 * 首先按照第一个字符排序。如果第一个字符相同，再按照第二个字符排序。
 *
 *
 * */
public class Q20_DictionaryOrderSort {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // Read the number of strings
        int n = scanner.nextInt();
        scanner.nextLine();  // Consume the newline character

        // Initialize an array to hold the strings
        String[] strings = new String[n];
        // Read the strings
        for (int i = 0; i < n; i++) {
            strings[i] = scanner.nextLine();
        }

        // Sort the strings in lexicographical (dictionary) order
        // 可以直接用sort排序???算法题应该不行吧。这个答案不行。后续再找找更好的答案吧。
        // 网上又说直接可以用这个sort api的，也有说可以用冒泡排序的。
        // 其实用快排也可以啊。当然不管用冒排还是快排，都需要写一个方法，来判断两个字符串的大小。
        Arrays.sort(strings);

        // Output the sorted strings
        for (String str : strings) {
            System.out.println(str);
        }

        // Close the scanner
        scanner.close();
    }
}

